package model;

import java.util.ArrayList;

import utilities.Key;

import com.jme3.math.Vector2f;

/*
 * Common interface to interact with all objects containing a PhysicalDataset
 */
public interface IPhysicalDataModel { //extends IModel {

	//For use if physicalDataset is placed within a container
	public void setContainer(IPhysicalDataModelContainer container);

	public void removeContainer(IPhysicalDataModelContainer container);

	/*
	 * Set-able variables:
	 * Mass, Location, Velocity, Age, Rotation, Temperature, Radius, OrbitalRadius, Luminosity, MagField.
	 * 
	 * All others calculated
	 */
	//---------------------------------------------
	public Double getMass();

	public void changeMass(double deltaMass);

	public void setMass(double mass);

	public Double getVolume();

	public Double getDensity();

	public Double getFullEnergy();

	public Double getMassEnergy();

	public Double getSpinEnergy();

	public Double getRadiationEnergy();

	public Double getGravEnergy();

	public Double getMagneticEnergy();

	public Vector2f getLocation();

	//public void setLocation(Vector2f location);

	public int[] getHexLocation();

	//public void setHexLocation(ArrayList<Integer> location);

	public Vector2f getVelocity();

	public void setVelocity(Vector2f velocity);

	public Double getAge();

	public void setAge(double age);

	public Double getGravity();

	public Double getRotation();

	public void setRotation(double rotation);

	public Double getTemperature();

	public void setTemperature(double temperature);

	public Double getRadius();

	public void setRadius(double radius);

	public Double getOrbitalRadius();

	public void setOrbitalRadius(double orbitalRadius);

	public Double getLuminosity();

	public void setLuminosity(double luminosity);

	public Double getMagField();

	public void setMagField(double magField);

	public ArrayList<Key> getGameEventList();

	public void addGameEvent(Key gameEvent);

	public void removeGameEvent(Key gameEvent);

	public ArrayList<Key> getCacheList();

	public void addCache(Key cache);

	public void removeCache(Key cache);

	public ArrayList<Key> getItemList();

	public void addItem(Key item);

	public void removeItem(Key item);

	public ArrayList<Key> getPuzzleList();

	public void addPuzzle(Key puzzle);

	public void removePuzzle(Key puzzle);

	public ArrayList<String> getNameList();

	public void addName(String name);

	public void removeName(String name);

	public String getCurrentName();	

}